#!C:\perl\bin
use strict;
use warnings;
use lib "/perl/lib";
use Spreadsheet::ParseExcel;
use DBI;
use utf8;
use Encode;

# connection a sql
my $dbh=DBI->connect("DBI:Pg:dbname='mmdn';host=localhost","postgres","mmdn",{'RaiseError'=>1});

# ************************************* Parcours et récupération fichier excel ************************************* #
my $fichier=shift;
my $parser=Spreadsheet::ParseExcel->new();
my $workbook=$parser->parse("$fichier");
if (!defined $workbook){
    die $parser->error(),".\n";
}

my $worksheet;

foreach($workbook->worksheets()){
    $worksheet=$_;
	my $etage=$worksheet->get_name();
	my ($row_min,$row_max) = $worksheet->row_range();
	my ($col_min, $col_max) = $worksheet->col_range();

	for my $row (1 .. $row_max){ #parcours lignes
		my $boite;
		my $histo;
		my $type;
		my $groupe;
		
		for my $col ($col_min .. $col_max){ #parcours colonnes
			if($col eq 0){
				my $cont=$worksheet->get_cell($row,$col);
				if($cont){
					my $temp=$cont->value();
					$boite="$etage $temp";
				}
			}
			if($boite){
				if($col eq 1){
					my $cont=$worksheet->get_cell($row,$col);
					$histo=$cont->value();
				}
				elsif($col eq 2){
					my $cont=$worksheet->get_cell($row,$col);
					$type=$cont->value();
				}
				elsif($col eq 3){
					my $cont=$worksheet->get_cell($row,$col);
					$groupe=$cont->value();
				}
			}
		}
		
		# ************************************* Création animal ************************************* #
		my $id_anim;
		if($histo){
			#verification que l'animal n'existe pas
			$id_anim=$dbh->selectrow_array("SELECT id_animal FROM Animal WHERE code_histologique=$histo");
			
			#si l'animal n'existe pas
			if(not $id_anim){
				$dbh->do("INSERT INTO Animal(code_histologique) VALUES($histo)");
				$id_anim=$dbh->selectrow_array("SELECT id_animal FROM Animal WHERE code_histologique=$histo");
			}
			
			if($id_anim){ #creation biobanque
				#verif que l'animal et le tissu ne sont pas déjà dans la biobanque
				my $new_type=encode_utf8($type);
				my $new_gp=encode_utf8($groupe);
				my $temp=$dbh->selectrow_array("SELECT type_tissu FROM Biobanque WHERE type_tissu='$new_type' AND id_animal=$id_anim AND groupe_organe='$new_gp'");
				
				if(not $temp){ #si pas de donnée dans la biobanque, on l'ajoute
					$dbh->do("INSERT INTO Biobanque(nom_boite,id_animal,type_tissu,groupe_organe) VALUES ('$boite',$id_anim,'$new_type','$new_gp')");
				}
			}
		}
	}
	
	last if $_->get_name() eq 'Etage 2 -80 P2';
}
